#ifndef _XX_YY_BMOCK_CONTROL_TOOLS_MOCK
#define _XX_YY_BMOCK_CONTROL_TOOLS_MOCK
#include "bmock.hpp"
#include "detail/bmock_message.hpp"
#include "detail/bmock_test_control_tools.hpp"

namespace bmock {
	struct control_tools_mock : public test_control_tools {
		control_tools_mock(bmock::test_mode_control &ctl)
			:control_(&ctl)
		{}
		void error(const std::string &msg,const bmock::location &,bool fail,bool except) const;
		void abort(const bmock::location &) const;
		virtual bool warn(const std::string &,const location &) const;
		virtual bool check_equal(const std::string &exp,const std::string &act,const std::string &msg,const bmock::location &) const;
		virtual void require_equal(size_t exp,size_t act,const std::string &msg,const bmock::location &) const;
		virtual bool check_less_or_equal(size_t exp,size_t act,const std::string &msg,const bmock::location &) const;
		virtual bool check_ptr(bool null_expected,bool null_supplied,const std::string &msg,const bmock::location &) const;
		virtual bool warn_not_equal(size_t exp,size_t act,const std::string &msg,const bmock::location &) const;
	private:
		bmock::test_mode_control *control_;
	};
};
#endif